/*
@author: tian-yan-tian-ge
@file: 2023.11.24tree命令.go
@time: 2023/11/28 22:07
*/
package main

import (
	"fmt"
	"os"
	"path/filepath"
)

func main() {
	root := "." // 当前目录
	maxDepth := 0 // 无限制深度

	walk(root, maxDepth)
}

func walk(path string, maxDepth int) {
	// 打印当前目录
	print(path, maxDepth)

	// 递归遍历子目录
	err := filepath.Walk(path, func(p string, info os.FileInfo, err error) error {
		if err != nil {
			return err
		}

		if info.IsDir() {
			// 如果是目录，打印目录并递归遍历
			print(p, maxDepth)
			walk(p, maxDepth+1)
		}

		return nil
	})

	if err != nil {
		fmt.Println(err)
	}
}

func print(path string, depth int) {
	// 根据深度打印缩进和目录/文件名
	for i := 0; i < depth; i++ {
		fmt.Print("  ")
	}
	fmt.Println("-", path)
}
